/*************************************************************************
    > File Name: 2fork-3.c
    > Author: Ykk
    > Mail: 3393579535@qq.com 
    > Created Time: 2023年04月11日 星期二 19时56分23秒
 ************************************************************************/

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>

//全局变量，数据段
int num = 100;

int main()
{
	int a = 19;
	pid_t pid = -1;
	pid = fork();
	int *p = NULL;
	//在堆区分配内存空间
	p = malloc(sizeof(int));
	if(NULL==p)
	{
		printf("malloc failed..\n");
		return 1;
	}
	memset(p,0,sizeof(int));
	*p=200;

	if(pid<0)
	{
		//没有创建成功
		perror("fork");
		return 0;
	}
	if(0==pid)
	{
		sleep(1);
		printf("子进程睡醒后 *p = %d num = %d , a = %d\n",*p,num,a);
		free(p);
		p=NULL;
	}
	else if(pid>0)
	{
		printf("父进程 *p = %d num = %d , a = %d\n",*p,num,a);
		a++;
		num++;
		(*p)++;
		printf("父进程后 *p = %d num = %d , a = %d\n",*p,num,a);
		free(p);
		p=NULL;
	}
	return 0;
}
